/**
 * 通用API响应类型，根据文档格式统一调整
 */
export interface ApiResponse<T = any> {
  code: number      // 状态码：0=成功，其他值表示错误码
  errorMsg: string  // 错误信息：成功时为空
  data: T           // 响应数据
  total?: number    // 可选，仅用于分页列表，表示总数量
}

/**
 * API响应工具类
 */
export class ApiResponseUtil {
  /**
   * 创建成功响应
   * @param data 响应数据
   * @param total 总数（可选，用于分页）
   * @returns 成功的API响应对象
   */
  static success<T = any>(data: T, total?: number): ApiResponse<T> {
    return {
      code: 0, // 成功状态码为0
      data,
      errorMsg: '',
      ...(total !== undefined ? { total } : {})
    }
  }

  /**
   * 创建失败响应
   * @param code 错误码
   * @param errorMsg 错误消息
   * @returns 失败的API响应对象
   */
  static fail(code: number = 500, errorMsg: string = '操作失败'): ApiResponse<null> {
    return {
      code,
      data: null,
      errorMsg
    }
  }
}

/**
 * 分页查询参数，调整为与API文档一致
 */
export interface PageQuery {
  page: number       // 页码，默认1
  page_size: number  // 每页数量
  [key: string]: any // 其他查询参数
}

/**
 * 分页响应数据
 */
export interface PageResult<T = any> {
  list: T[]
  total: number
  pageNum: number
  pageSize: number
}
